(function() {
// Localize jQuery variable
var jQuery,
_domain = document.domain;
/******** Load jQuery if not present *********/
if (window.jQuery === undefined || window.jQuery.fn.jquery !== '1.7.1') {
var script_tag = document.createElement('script');
script_tag.setAttribute("type","text/javascript");
script_tag.setAttribute("src","https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js");
// var script_tag_tmpl = document.createElement('script');
// script_tag_tmpl.setAttribute("type","text/javascript");
// script_tag_tmpl.setAttribute("src","https://ajax.aspnetcdn.com/ajax/jquery.templates/beta1/jquery.tmpl.min.js");
if (script_tag.readyState) {
script_tag.onreadystatechange = function () { // For old versions of IE
if (this.readyState == 'complete' || this.readyState == 'loaded') {
scriptLoadHandler();
}
};
} else {
script_tag.onload = scriptLoadHandler;
}
// Try to find the head, otherwise default to the documentElement
(document.getElementsByTagName("head")[0] || document.documentElement).appendChild(script_tag);
// (document.getElementsByTagName("head")[0] || document.documentElement).appendChild(script_tag_tmpl);
} else {
// The jQuery version on the window is the one we want to use
jQuery = window.jQuery;
main();
}
/******** Called once jQuery has loaded ******/
function scriptLoadHandler() {
// Restore $ and window.jQuery to their previous values and store the
// new jQuery in our local jQuery variable
jQuery = window.jQuery.noConflict(true);
// Call our main function
main();
}
/* * *
* Our main function
* * */
function main() {
var SeriesLib = (function () {
var pub = {},
_apir="https://api.athlinks.com",
_apirLocal="http://localhost:60003/",
_seriesid = '',
_scoreType,
_eventid = 0,
_sortBy = 'p',
_pageSize = 50,
_page = 1,
_eventGroupID = 0,
_filter = '',
_filterval = '',
_strPaging = undefined,
_strClasses = undefined,
_pageContent = '
',
_canvasid = 'athlinks-raceresult-widget';
pub.Setup = function(){
jQuery('#'+_canvasid).html(_pageContent);
};
pub.GetSeries = function(seriesID){
_seriesid = seriesID;
var c = '';
var jsonp_url = _apir + "/results/series?seriesid=" + _seriesid + "&format=json&key=a6f03dfc5e1f10d8e9776e5140c631c4&callback=?";
jQuery.getJSON(jsonp_url,function(data){
_scoreType = data.ScoreType;
SeriesLib.GetStandings('p','','',0,1);
c = '' + data.Name + ' Points Last Updated: ' + data.LastCalcDateString + '
';
Inject("athlinks-raceresult-widget-athlinks-event-info",c);
});
};
pub.GetStandings = function(sortBy, filter, filterVal, eventGroupID, page){
_seriesid = '2678';
_sortBy = sortBy;
_filter = filter;
_filterval = filterVal;
_page = page;
_eventGroupID = eventGroupID;
var c = '';
jQuery("#athlinks-raceresult-widget-resTbl").css({opacity:.25});
Inject("athlinks-raceresult-widget-athlinks-fields"," ");
var jsonp_url = _apir + "/results/seriesstandings?seriesid=" + _seriesid + "&filter=" + _filter + "&filtervalue=" + _filterval + "&eventGroupID=" + _eventGroupID + "&page=" + _page + "&pageSize=" + _pageSize + "&format=json&key=a6f03dfc5e1f10d8e9776e5140c631c4&callback=?";
jQuery.getJSON(jsonp_url,function(data){
_strPaging = GeneratePaging(data);
if(_filter.toLowerCase()!=='n'||_filterval===''){c += _strPaging;}
c += '';
c += '';
Inject("athlinks-raceresult-widget-athlinks-results-info",c);
GenerateClasslist();
GenerateEventGrouplist();
if(_filterval !== ''){jQuery("#tbAL_Search").trigger("keyup");jQuery("#btnAL_Clear").show();};
jQuery('html, body').animate({scrollTop: jQuery("#athlinks-raceresult-widget-athlinks-event-info").offset().top}, 200);
});
track('a6f03dfc5e1f10d8e9776e5140c631c4','series/GetStandings','seriesid:'+_seriesid+';filter:'+_filter+';filterval:'+_filterval+';page='+_page);
};
pub.ShowSeriesResults = function(btn, racerID) {
jQuery(btn).html(' ');
var c = '';
var jsonp_url = _apir + "/results/seriesresult?seriesid=" + _seriesid + "&racerid=" + racerID + "&key=a6f03dfc5e1f10d8e9776e5140c631c4&format=json&callback=?";
jQuery.getJSON(jsonp_url,function(data){
var resultsHtml = '';
jQuery.each( data, function(){
resultsHtml += ' ' + ( this.EventName.length > 30 ? this.EventName.substring(0,30) + '...' : this.EventName ) + '' + ( _scoreType !== 3 && _scoreType !== 4 ? this.TicksString : '' ) + ' ' + this.RankO + ' ' + this.RankG + ' ' + this.RankA + ' ' + ( _scoreType !== 3 && _scoreType !== 4 ? this.Points : this.TicksString ) + ' ' + ( _scoreType == 3 && _scoreType == 4 && this.TimeRank > 0 ? " " : "" ) + ' ';
});
jQuery("#athlinks-raceresult-widget-resrow-" + racerID).after(resultsHtml).show();
jQuery(btn).html('-');
});
track('a6f03dfc5e1f10d8e9776e5140c631c4','series/GetResult','seriesid:'+_seriesid+';racerid:'+racerID);
};
pub.ShowRacesInSeries = function(seriesID){
_seriesid = seriesID;
var c = '';
var jsonp_url = _apir + "/raceseries/events/?seriesid=" + _seriesid + "&key=a6f03dfc5e1f10d8e9776e5140c631c4&format=json&callback=?";
jQuery.getJSON(jsonp_url,function(data){
jQuery("#btn_ToggleView").html("Show Standings");
var resultsHtml = 'Showing ' + data.MasterCount + ' Events in Series
';
var resultsUrl = 'widget.aspx?raceid=%%raceid%%&widget=results';
jQuery.each(data.List, function(){
var courseID = this.Courses[0] ? this.Courses[0].CourseID : 0;
resultsHtml += '
Region: ' + this.GroupName + '
' + this.City + ', ' + this.StateProvAbbrev + ', ' + this.CountryID + '
' + FormatJSONDate(this.RaceDate) + '
';
});
resultsHtml += "
";
jQuery("#athlinks-raceresult-widget-athlinks-results-info").html(resultsHtml);
});
track('a6f03dfc5e1f10d8e9776e5140c631c4','series/GetRaces','seriesid:'+_seriesid);
};
pub.SafeHash = function(val,def){
return val===undefined?def:val;
};
pub.FormatNumber = function (nStr) {
nStr += '';
var x = nStr.split('.');
var x1 = x[0];
var x2 = x.length > 1 ? '.' + x[1] : '';
var rgx = /(\d+)(\d{3})/;
while (rgx.test(x1)) {
x1 = x1.replace(rgx, '$1' + ',' + '$2');
}
return x1 + x2;
},
function RacerLink(iM, rID, eID){
return 'https://athlinks.com/result/' + _eventid + '/' + _courseid + '/' + rID + '/' + eID;
}
function AddCommas(nStr){
nStr += '';
x = nStr.split('.');
x1 = x[0];
x2 = x.length > 1 ? '.' + x[1] : '';
var rgx = /(\d+)(\d{3})/;
while(rgx.test(x1)) {
x1 = x1.replace(rgx, '$1' + ',' + '$2');
}
return x1 + x2;
};
function Inject(target,content){
jQuery('#'+target).html(content);
};
function FormatJSONDate(jsonDate,tiny) {
var date = eval(jsonDate.replace(/\/Date\((\d+(-\d+)?)\)\//gi, "new Date($1)"));
return tiny === true ? dateFormat(date, "mm/dd/yy") : dateFormat(date, "ddd, mmm ddS, yyyy");
};
/* Formatters */
var dateFormat = function () { var token = /d{1,4}|m{1,4}|yy(?:yy)?|([HhMsTt])\1?|[LloSZ]|"[^"]*"|'[^']*'/g, timezone = /\b(?:[PMCEA][SDP]T|(?:Pacific|Mountain|Central|Eastern|Atlantic) (?:Standard|Daylight|Prevailing) Time|(?:GMT|UTC)(?:[-+]\d{4})?)\b/g, timezoneClip = /[^-+\dA-Z]/g, pad = function (val, len) { val = String(val); len = len || 2; while (val.length < len) val = "0" + val; return val }; return function (date, mask, utc) { var dF = dateFormat; if (arguments.length == 1 && Object.prototype.toString.call(date) == "[object String]" && !/\d/.test(date)) { mask = date; date = undefined } date = date ? new Date(date) : new Date; if (isNaN(date)) throw SyntaxError("invalid date"); mask = String(dF.masks[mask] || mask || dF.masks["default"]); if (mask.slice(0, 4) == "UTC:") { mask = mask.slice(4); utc = true } var _ = utc ? "getUTC" : "get", d = date[_ + "Date"](), D = date[_ + "Day"](), m = date[_ + "Month"](), y = date[_ + "FullYear"](), H = date[_ + "Hours"](), M = date[_ + "Minutes"](), s = date[_ + "Seconds"](), L = date[_ + "Milliseconds"](), o = utc ? 0 : date.getTimezoneOffset(), flags = { d: d, dd: pad(d), ddd: dF.i18n.dayNames[D], dddd: dF.i18n.dayNames[D + 7], m: m + 1, mm: pad(m + 1), mmm: dF.i18n.monthNames[m], mmmm: dF.i18n.monthNames[m + 12], yy: String(y).slice(2), yyyy: y, h: H % 12 || 12, hh: pad(H % 12 || 12), H: H, HH: pad(H), M: M, MM: pad(M), s: s, ss: pad(s), l: pad(L, 3), L: pad(L > 99 ? Math.round(L / 10) : L), t: H < 12 ? "a" : "p", tt: H < 12 ? "am" : "pm", T: H < 12 ? "A" : "P", TT: H < 12 ? "AM" : "PM", Z: utc ? "UTC" : (String(date).match(timezone) || [""]).pop().replace(timezoneClip, ""), o: (o > 0 ? "-" : "+") + pad(Math.floor(Math.abs(o) / 60) * 100 + Math.abs(o) % 60, 4), S: ["th", "st", "nd", "rd"][d % 10 > 3 ? 0 : (d % 100 - d % 10 != 10) * d % 10] }; return mask.replace(token, function ($0) { return $0 in flags ? flags[$0] : $0.slice(1, $0.length - 1) }) } } (); dateFormat.masks = { "default": "ddd mmm dd yyyy HH:MM:ss", shortDate: "m/d/yy", mediumDate: "mmm d, yyyy", longDate: "mmmm d, yyyy", fullDate: "dddd, mmmm d, yyyy", shortTime: "h:MM TT", mediumTime: "h:MM:ss TT", longTime: "h:MM:ss TT Z", isoDate: "yyyy-mm-dd", isoTime: "HH:MM:ss", isoDateTime: "yyyy-mm-dd'T'HH:MM:ss", isoUtcDateTime: "UTC:yyyy-mm-dd'T'HH:MM:ss'Z'" }; dateFormat.i18n = { dayNames: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"], monthNames: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"] }; Date.prototype.format = function (mask, utc) { return dateFormat(this, mask, utc) };
function GenerateCourseList(data, courseID){
var ret = '';
jQuery.each(data.Courses, function(index, value){
ret += '' + this.CourseName + ' ';
});
return '' + ret + ' ';
};
function GeneratePaging(data){
var ret = '',
prev = '',
next = '',
totPg = 0;
totPg = (1+(Math.floor(data.MasterCount/_pageSize)));
//if( _page > 1 ){prev = '';}
for( var p = 1; p <= totPg; p++ ){ret += 'Page ' + ' ' + (1+p*_pageSize-_pageSize) + ' to ' + Smaller((p*_pageSize),this.Count) + ' ';}
//if( _page < totPg ){next = '';}
return 'Show Pages:
' + ( ( ret === '' ) ? '' : prev + '' + ret + ' ' + next ) + '
';
};
function GenerateClasslist(){
var jsonp_url = _apir + "/raceseries/classes/" + _seriesid + "/?format=json&key=a6f03dfc5e1f10d8e9776e5140c631c4&callback=?",
classes = '';
jQuery.getJSON(jsonp_url,function(data){
var selectedM=(_filterval ==='M' ? ' selected="true"' : "");
var selectedF=(_filterval ==='F' ? ' selected="true"' : "");
classes += 'Females ';
classes += 'Males ';
classes += ' --------------- ';
jQuery.each(data, function(index, value){
if( value.Key.toLowerCase().indexOf("u:") === -1 ){
var selected = ( _filterval === value.Key ? ' selected="true"' : "");
classes += '' + value.Key.replace(":"," - ") + ' ';
}
});
_strClasses = "Show All ... " + classes + " ";
jQuery("#divClassList").html(_strClasses);
});
}
function GenerateEventGrouplist(){
var jsonp_url = _apir + "/results/series?seriesid=" + _seriesid + "&format=json&key=a6f03dfc5e1f10d8e9776e5140c631c4&callback=?",
classes = '';
jQuery.getJSON(jsonp_url,function(data){
if (!data.EventGroups || data.EventGroups.MasterCount < 2){
return;
}
classes += ' --------------- ';
jQuery.each(data.EventGroups.List, function(index, value){
var selected = ( parseInt(_eventGroupID) === value.GroupID ? ' selected="true"' : "");
classes += '' + value.Name + ' ';
});
_strClasses = "Show All ... " + classes + " ";
jQuery("#divEventGroup").html(_strClasses);
});
}
function DrawClaim(name,age,state){
return 'Claim ';
};
function Smaller(a,b){
return a>b?b:a;
};
return pub;
} ());
// Doc on Ready..
jQuery(document).ready(function() {
var cssurl = "https://s3.amazonaws.com/athlinks_static/styles/athlinks-widget-results.css";
var css_link = jQuery(" ", { /******* Load CSS *******/
rel: "stylesheet",
type: "text/css",
href: cssurl
});
if( !jQuery("link[href='" + cssurl + "']").length ){
css_link.appendTo('head');
}
// On Sort
jQuery(document).on("click","#btnSort-C",function(e){
SeriesLib.GetStandings('c','','',0,1);
});
jQuery(document).on("click","#btnSort-P",function(e){
SeriesLib.GetStandings('p','','',0,1);
});
jQuery(document).on("click","#btnSort-N",function(e){
SeriesLib.GetStandings('n','','',0,1);
});
// On Search
jQuery(document).on("keyup keypress","#tbAL_Search",function(e){
var code = e.keyCode || e.which;
if( e !== undefined && code === 13 ){
e.preventDefault();
var t = jQuery(this).attr("value");
if( t.length > 2 ){
SeriesLib.GetStandings(jQuery("#fldSortBy").val(),'n',t,0,1);
}
return false;
}else{
if( jQuery(this).attr("value")!=='' ){
jQuery("#btnAL_Search").removeAttr("disabled");
}else{
jQuery("#btnAL_Search").attr("disabled","disabled");
}
}
});
jQuery(document).on("click","#btnAL_Search",function(e){
e.preventDefault();
SeriesLib.GetStandings(jQuery("#fldSortBy").val(),'n',jQuery("#tbAL_Search").attr("value"),0,1);
});
jQuery(document).on("click","#btnAL_Clear",function(){
SeriesLib.GetStandings(jQuery("#fldSortBy").val(),'','',0,1);
});
jQuery(document).on("change","#lstClass",function(){
var classID = jQuery(this).val();
jQuery(this).val();
if( classID !== '' ){
var type = classID.indexOf(':') > -1 ? "a" : "g";
SeriesLib.GetStandings(jQuery("#fldSortBy").val(),type,classID,jQuery("#fldEventGroupId").val(),1);
}
});
jQuery(document).on("change","#lstEventGroup",function(){
var eventGroupID = jQuery(this).val();
SeriesLib.GetStandings(jQuery("#fldSortBy").val(),jQuery("#fldFilter").val(),jQuery("#fldFilterVal").val(),eventGroupID,1);
});
jQuery(document).on("click",".pager",function(){
var pg = jQuery(this).attr("title"),
id = jQuery(this).attr("id").toLowerCase();
SeriesLib.GetStandings(jQuery("#fldSortBy").val(),jQuery("#fldFilter").val(),jQuery("#fldFilterVal").val(),jQuery("#fldEventGroupId").val(),pg);
});
jQuery(document).on("click","#athlinks-raceresult-widget-resTbl > tbody > tr.res",function(){
var btn = jQuery(this).find("td.expand>div.resBtn");
var racerID = jQuery(btn).attr("id").replace('rsBtn','');
if(jQuery(btn).html() === '+'){
SeriesLib.ShowSeriesResults(btn,racerID);
}else{
if( jQuery(btn).closest("tr.res").next("tr.raceres").length > 0 ) {
jQuery(btn).closest("tr.res").nextAll("tr.raceres").hide();
jQuery(btn).html("+");
}
}
});
jQuery(document).on("change","#lstPaging",function(){
var pg = jQuery(this).val();
var classID = jQuery('#lstClass').val(), type = '';
if(classID != '') {
type = classID.indexOf(':') > -1 ? "a": "g";
}
SeriesLib.GetStandings(jQuery("#fldSortBy").val(), type, classID, 0, pg);
});
jQuery(document).on("click","#btnToggleView",function(){
if( jQuery(this).html() === "Show Events" ){
jQuery(this).html("Show Standings");
SeriesLib.ShowRacesInSeries(2678);
} else {
jQuery(this).html("Show Standings");
SeriesLib.GetStandings(jQuery("#fldSortBy").val(),'','',0,1);
}
});
SeriesLib.Setup();
SeriesLib.GetSeries(2678);
// SeriesLib.GetStandings('p','','',0,1);
});
} // End main();
function track(key,p,ipc){
var track = 'https://www.google-analytics.com/__utm.gif?&utmwv=1&utmn=' +Math.floor(Math.random()*99999) +
'&utmhn=' + _domain +
'&utmr=http://www.referer.com/referer.html' +
'&utmp=' + p +
'&utmipc=' + ipc +
'&utmtst=' + key +
'&utmac=UA-2421114-3' +
'&utmcc=__utma%3D999.1881085301.999.999.999.1%3B';
jQuery.get(track);
}
})(); // We call our anonymous function immediately